草庐IT

MySQL GROUP BY 和 COUNT 多列

全部标签

MySql Performance : INSERT. ..ON DUPLICATE KEY UPDATE 或 UPDATE & ROW_COUNT

我查询大部分时间都会更新现有记录。但是,我需要检查此记录是否存在,如果不存在,我应该创建它。通常我会使用INSERT...ONDUPLICATEKEYUPDAT,但由于只需要插入几个查询,我正在考虑执行UPDATE并稍后检查如果返回的ROW_COUNT()为零,并且在这种情况下执行INSERT。什么会给我最好的表现? 最佳答案 MySQL有一个REPLACEINTO语法,这可能就是您正在寻找的。如果这对您不起作用,使用UPDATE并检查ROW_COUNT()应该可行,您可能希望将整个事情包装在存储过程中,这样您就可以节省返回服务器的

mysql - 当连接表有多个列的组合作为主键时,如何选择连接表的COUNT()?

我试图在sql中连接两个表并获取第二个表的计数。第二个表有几列,其中三列一起作为主键。我的查询开始于:SELECTtimes.*,COUNT(paylog.*)AS`total`FROMtimesLEFTJOINpaylogONpaylog.type='work'ANDpaylog.targetID=times.id我因为在count()参数中使用表名而感到厌恶:YouhaveanerrorinyourSQLsyntax;checkthemanualthatcorrespondstoyourMySQLserverversionfortherightsyntaxtousenear'*)A

mysql - 比较具有和不具有 NULL 值的多列

5,不知道我做错了什么,请帮忙。正如在多列比较查询中找到最小值一样,NULL继续显示为结果而不是最小值SELECTIF(col1ISNULLORcol2ISNULLORcol3ISNULLORcol4ISNULLORcol5ISNULL,COALESCE(col1,col2,col3,col4,col5),LEAST(col1,col2,col3,col4,col5))AsResultantfromdb.tablenameGroupbyId;或者尝试了CASEselect但没有成功。谢谢 最佳答案 如果null被认为是0select

mysql - 在 mysql 的同一列上使用 sum,count

我有一个表,其中有操作和消息作为列我想计算特定日期时间的特定操作我能够对每个操作求和但不计算特定操作。SELECTDATE(datetime),carpark_name,Sum(CASEactionwhen'2'then1else0end)asAcceptedIMG,Sum(CASEactionwhen'3'then1else0end)asRejectedIMG,Sum(CASEactionwhen'4'then1else0end)asChangeIMG,sum(CASEactionwhen'23'then1else0end)asAcceptedViolation,sum(CASEac

MySQL显示多列的排名

我的表格看起来像这样:NameHeightWeightJim60150Tom62170Mac64160我想找到一个返回如下内容的查询:NameHeightWeightHeight_RankWeight_RankJim6015033Tom6217021Mac6416012如上所述,显示多列排名的最佳方式是什么?我可以使用orderby来查找单个列的排名,但我希望在单个表中拥有多个列的排名。谢谢!编辑:下面的答案是一个很好的解决方案。但是,如果您对数千行进行排名,您可能会遇到另一个问题。“group_concat”的最大长度为1024字节。您可以通过运行“SETSESSIONgroup_c

多个表上的 MySQL 连接和 COUNT()

我试图在一个查询中对多个表进行COUNT(),但我无法让它工作。这是我到目前为止所拥有的:表格:table1---------------------id|name---------------------1|test2|test2table2---------------------id|table1_id---------------------1|12|13|1table3---------------------id|table2_id---------------------1|1table4---------------------id|size|table3_id----

MySQL 查询 - 来自多个表的 COUNT 的总和

我有三个表:客户:id,namecontracts_jewels:id,customer_id,paid,transferred,final_datecontracts_objects:id,customer_id,paid,transferred,final_date如您所见,最后两个表的结构是相同的。“付费”和“转账”字段包含值0或1。我需要的是进行一个查询,该查询应返回所有客户(无论他们是否有契约(Contract)),并且对于每个客户:id、名称、count_contracts_all、count_contracts_active哪里:count_contracts_all表示

MySQL 优化 select count distinct group by

我有这个问题:SELECT`variationID`,count(DISTINCT(`userID`))FROMdataWHERE`testID`=XXXXAND`visit`=1GROUPBY`variationID`;这需要很多时间来查询。我如何加快查询速度。select_typetabletypepossible_keyskeykey_lenrefrowsfilteredExtraSIMPLEdatarefdc3_testIDPage,dc3_testIDvarIDPage,user_test_varID_urldc3_testIDvarIDPage8const331061021

mysql - COUNT() 结合 INNER/LEFT JOIN 不起作用

我遇到了一个mysql查询,对于我的水平来说似乎太复杂了。非常感谢任何解决此问题的帮助。我有3个表:_members:所有成员列表_friends:每个成员拥有的所有好友列表,使用2个字段:friends.id_member包含成员id,friends.id_friend包含相应好友的id。_comments:成员发表的所有评论列表(使用字段comments.id_member将此表加入到表members中)我愿意:_(1):显示一个成员可能拥有的所有好友(在这个例子中,成员编号为35;它运作良好)SELECTfriends.*,members.*FROMfriendsINNERJOI

mysql - 选择 CASE WHEN ALIAS with COUNT 不返回零值

我正在尝试根据分配给他们的文件计算用户数量,并使用以下MySQL查询按这些文件的状态进行分组:SELECT(CASEWHENF.statusISnullTHEN'records'WHENF.status=0THEN'prospects'WHENF.status>=1ANDF.status我的问题是,如果没有用户拥有具有特定状态的文件,查询将不会返回该行:目前查询返回值如下:+------------+-------+|FileStatus|users|+------------+-------+|prospects|5||open|10||archived|12|+----------